YES 1.307
↳ HASKELL
↳ LR
((genericSplitAt :: Int -> [a] -> ([a],[a])) :: Int -> [a] -> ([a],[a])) |
import qualified Maybe import qualified Prelude |
|||||||||||||||||||||||||||||||||||||||
genericSplitAt :: Integral b => b -> [a] -> ([a],[a])
|
import qualified List import qualified Prelude |
\(xs',_)→xs'
xs'0 (xs',_) = xs'
\(_,xs'')→xs''
xs''0 (_,xs'') = xs''
↳ HASKELL
↳ LR
↳ HASKELL
↳ CR
((genericSplitAt :: Int -> [a] -> ([a],[a])) :: Int -> [a] -> ([a],[a])) |
import qualified Maybe import qualified Prelude |
|||||||||||||||||||||||||||||||||||||||||||||||||
genericSplitAt :: Integral b => b -> [a] -> ([a],[a])
|
import qualified List import qualified Prelude |
case compare x y of EQ → o LT → LT GT → GT
primCompAux0 o EQ = o primCompAux0 o LT = LT primCompAux0 o GT = GT
↳ HASKELL
↳ LR
↳ HASKELL
↳ CR
↳ HASKELL
↳ IFR
((genericSplitAt :: Int -> [a] -> ([a],[a])) :: Int -> [a] -> ([a],[a])) |
import qualified Maybe import qualified Prelude |
|||||||||||||||||||||||||||||||||||||||||||||||||
genericSplitAt :: Integral b => b -> [a] -> ([a],[a])
|
import qualified List import qualified Prelude |
if primGEqNatS x y then Succ (primDivNatS (primMinusNatS x y) (Succ y)) else Zero
primDivNatS0 x y True = Succ (primDivNatS (primMinusNatS x y) (Succ y)) primDivNatS0 x y False = Zero
if primGEqNatS x y then primModNatS (primMinusNatS x y) (Succ y) else Succ x
primModNatS0 x y True = primModNatS (primMinusNatS x y) (Succ y) primModNatS0 x y False = Succ x
↳ HASKELL
↳ LR
↳ HASKELL
↳ CR
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
((genericSplitAt :: Int -> [a] -> ([a],[a])) :: Int -> [a] -> ([a],[a])) |
import qualified Maybe import qualified Prelude |
|||||||||||||||||||||||||||||||||||||||||||||||||
genericSplitAt :: Integral b => b -> [a] -> ([a],[a])
|
import qualified List import qualified Prelude |
↳ HASKELL
↳ LR
↳ HASKELL
↳ CR
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
((genericSplitAt :: Int -> [a] -> ([a],[a])) :: Int -> [a] -> ([a],[a])) |
import qualified Maybe import qualified Prelude |
|||||||||||||||||||||||||||||||||||||||||||||||||
genericSplitAt :: Integral b => b -> [a] -> ([a],[a])
|
import qualified List import qualified Prelude |
genericSplitAt 0 xs = ([],xs) genericSplitAt vw [] = ([],[]) genericSplitAt n (x : xs)
| n > 0
= (x : xs',xs'') where
vv9 = genericSplitAt (n - 1) xs
xs' = xs'0 vv9
xs'' = xs''0 vv9
xs''0 (vx,xs'') = xs''
xs'0 (xs',vy) = xs' genericSplitAt vz wu = error []
genericSplitAt vvx xs = genericSplitAt5 vvx xs genericSplitAt vw [] = genericSplitAt3 vw [] genericSplitAt n (x : xs) = genericSplitAt2 n (x : xs) genericSplitAt vz wu = genericSplitAt0 vz wu
genericSplitAt0 vz wu = error []
genericSplitAt2 n (x : xs) =
genericSplitAt1 n x xs (n > 0) where
genericSplitAt1 n x xs True = (x : xs',xs'') genericSplitAt1 n x xs False = genericSplitAt0 n (x : xs)
vv9 = genericSplitAt (n - 1) xs
xs' = xs'0 vv9
xs'' = xs''0 vv9
xs''0 (vx,xs'') = xs''
xs'0 (xs',vy) = xs' genericSplitAt2 vuy vuz = genericSplitAt0 vuy vuz
genericSplitAt3 vw [] = ([],[]) genericSplitAt3 vvv vvw = genericSplitAt2 vvv vvw
genericSplitAt4 True vvx xs = ([],xs) genericSplitAt4 vvy vvz vwu = genericSplitAt3 vvz vwu
genericSplitAt5 vvx xs = genericSplitAt4 (vvx == 0) vvx xs genericSplitAt5 vwv vww = genericSplitAt3 vwv vww
compare x y
| x == y
= EQ | x <= y
= LT | otherwise
= GT
compare x y = compare3 x y
compare0 x y True = GT
compare2 x y True = EQ compare2 x y False = compare1 x y (x <= y)
compare1 x y True = LT compare1 x y False = compare0 x y otherwise
compare3 x y = compare2 x y (x == y)
gcd' x 0 = x gcd' x y = gcd' y (x `rem` y)
gcd' x vwx = gcd'2 x vwx gcd' x y = gcd'0 x y
gcd'0 x y = gcd' y (x `rem` y)
gcd'1 True x vwx = x gcd'1 vwy vwz vxu = gcd'0 vwz vxu
gcd'2 x vwx = gcd'1 (vwx == 0) x vwx gcd'2 vxv vxw = gcd'0 vxv vxw
gcd 0 0 = error [] gcd x y =
gcd' (abs x) (abs y) where
gcd' x 0 = x gcd' x y = gcd' y (x `rem` y)
gcd vxx vxy = gcd3 vxx vxy gcd x y = gcd0 x y
gcd0 x y =
gcd' (abs x) (abs y) where
gcd' x vwx = gcd'2 x vwx gcd' x y = gcd'0 x y
gcd'0 x y = gcd' y (x `rem` y)
gcd'1 True x vwx = x gcd'1 vwy vwz vxu = gcd'0 vwz vxu
gcd'2 x vwx = gcd'1 (vwx == 0) x vwx gcd'2 vxv vxw = gcd'0 vxv vxw
gcd1 True vxx vxy = error [] gcd1 vxz vyu vyv = gcd0 vyu vyv
gcd2 True vxx vxy = gcd1 (vxy == 0) vxx vxy gcd2 vyw vyx vyy = gcd0 vyx vyy
gcd3 vxx vxy = gcd2 (vxx == 0) vxx vxy gcd3 vyz vzu = gcd0 vyz vzu
reduce x y
| y == 0
= error [] | otherwise
= x `quot` d :% (y `quot` d) where
d = gcd x y
reduce x y = reduce2 x y
reduce2 x y =
reduce1 x y (y == 0) where
d = gcd x y
reduce0 x y True = x `quot` d :% (y `quot` d)
reduce1 x y True = error [] reduce1 x y False = reduce0 x y otherwise
absReal x
| x >= 0
= x | otherwise
= `negate` x
absReal x = absReal2 x
absReal1 x True = x absReal1 x False = absReal0 x otherwise
absReal0 x True = `negate` x
absReal2 x = absReal1 x (x >= 0)
undefined
| False
= undefined
undefined = undefined1
undefined0 True = undefined
undefined1 = undefined0 False
↳ HASKELL
↳ LR
↳ HASKELL
↳ CR
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
((genericSplitAt :: Int -> [a] -> ([a],[a])) :: Int -> [a] -> ([a],[a])) |
import qualified Maybe import qualified Prelude |
||||||||||||||||||||||||||||||||||||||||||||||
genericSplitAt :: Integral a => a -> [b] -> ([b],[b])
|
||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
|
import qualified List import qualified Prelude |
genericSplitAt1 n x xs (n > 0) where
genericSplitAt1 n x xs True = (x : xs',xs'') genericSplitAt1 n x xs False = genericSplitAt0 n (x : xs)
vv9 = genericSplitAt (n - 1) xs
xs' = xs'0 vv9
xs'' = xs''0 vv9
xs''0 (vx,xs'') = xs''
xs'0 (xs',vy) = xs'
genericSplitAt2Xs'0 vzv vzw (xs',vy) = xs'
genericSplitAt2GenericSplitAt1 vzv vzw n x xs True = (x : genericSplitAt2Xs' vzv vzw,genericSplitAt2Xs'' vzv vzw) genericSplitAt2GenericSplitAt1 vzv vzw n x xs False = genericSplitAt0 n (x : xs)
genericSplitAt2Xs'' vzv vzw = genericSplitAt2Xs''0 vzv vzw (genericSplitAt2Vv9 vzv vzw)
genericSplitAt2Vv9 vzv vzw = genericSplitAt (vzv - 1) vzw
genericSplitAt2Xs' vzv vzw = genericSplitAt2Xs'0 vzv vzw (genericSplitAt2Vv9 vzv vzw)
genericSplitAt2Xs''0 vzv vzw (vx,xs'') = xs''
reduce1 x y (y == 0) where
d = gcd x y
reduce0 x y True = x `quot` d :% (y `quot` d)
reduce1 x y True = error [] reduce1 x y False = reduce0 x y otherwise
reduce2Reduce0 vzx vzy x y True = x `quot` reduce2D vzx vzy :% (y `quot` reduce2D vzx vzy)
reduce2Reduce1 vzx vzy x y True = error [] reduce2Reduce1 vzx vzy x y False = reduce2Reduce0 vzx vzy x y otherwise
reduce2D vzx vzy = gcd vzx vzy
gcd' (abs x) (abs y) where
gcd' x vwx = gcd'2 x vwx gcd' x y = gcd'0 x y
gcd'0 x y = gcd' y (x `rem` y)
gcd'1 True x vwx = x gcd'1 vwy vwz vxu = gcd'0 vwz vxu
gcd'2 x vwx = gcd'1 (vwx == 0) x vwx gcd'2 vxv vxw = gcd'0 vxv vxw
gcd0Gcd' x vwx = gcd0Gcd'2 x vwx gcd0Gcd' x y = gcd0Gcd'0 x y
gcd0Gcd'2 x vwx = gcd0Gcd'1 (vwx == 0) x vwx gcd0Gcd'2 vxv vxw = gcd0Gcd'0 vxv vxw
gcd0Gcd'0 x y = gcd0Gcd' y (x `rem` y)
gcd0Gcd'1 True x vwx = x gcd0Gcd'1 vwy vwz vxu = gcd0Gcd'0 vwz vxu
↳ HASKELL
↳ LR
↳ HASKELL
↳ CR
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ NumRed
((genericSplitAt :: Int -> [a] -> ([a],[a])) :: Int -> [a] -> ([a],[a])) |
import qualified Maybe import qualified Prelude |
|||||||||||||||||
genericSplitAt :: Integral a => a -> [b] -> ([b],[b])
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
import qualified List import qualified Prelude |
↳ HASKELL
↳ LR
↳ HASKELL
↳ CR
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ NumRed
↳ HASKELL
↳ Narrow
(genericSplitAt :: Int -> [a] -> ([a],[a])) |
import qualified Maybe import qualified Prelude |
|||||||||||||||||
genericSplitAt :: Integral a => a -> [b] -> ([b],[b])
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
import qualified List import qualified Prelude |
↳ HASKELL
↳ LR
↳ HASKELL
↳ CR
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ NumRed
↳ HASKELL
↳ Narrow
↳ QDP
↳ QDPSizeChangeProof
new_genericSplitAt2Vv9(vzz300, vzz41, ba) → new_genericSplitAt(new_primMinusNat(vzz300), vzz41, ba)
new_genericSplitAt(Pos(Succ(vzz300)), :(vzz40, vzz41), ba) → new_genericSplitAt2Vv9(vzz300, vzz41, ba)
new_genericSplitAt(Pos(Succ(vzz300)), :(vzz40, vzz41), ba) → new_genericSplitAt(new_primMinusNat(vzz300), vzz41, ba)
new_primMinusNat(Succ(vzz3000)) → Pos(Succ(vzz3000))
new_primMinusNat(Zero) → Pos(Zero)
new_primMinusNat(Zero)
new_primMinusNat(Succ(x0))
From the DPs we obtained the following set of size-change graphs: